//////////////////////////////////////////////////////////////////////////

#ifndef _MAPPARSERBASE_H_
#include "mapparserbase.h"
#endif

//////////////////////////////////////////////////////////////////////////


MapParserBase::MapParserBase( const char* _fileName )
: m_FileStream(_fileName)
{
}


//////////////////////////////////////////////////////////////////////////


MapParserBase::~MapParserBase()
{
    m_FileStream.close();
}


//////////////////////////////////////////////////////////////////////////


void MapParserBase::Parse()
{
    int width, height;

    // Scan map size
    m_FileStream >> width;
    m_FileStream >> height;

    SetMapSize(width, height);

    char shape;
    while ( m_FileStream >> shape )
    {
        switch (shape)
        {
        case 'C':
            ParseCircle();
            break;

        case 'R':
            ParseRect();
            break;

        case 'P':
            ParsePolygon();
            break;

        case 'W':
            ParseWall();
            break;

        case 'X':
            ParseRevivalPoints();
            break;

        default:
            throw;
        }
    }
}


//////////////////////////////////////////////////////////////////////////
